#include <stdio.h>
#include "../c_src/types.h"

#ifdef _WIN32
#define EXPORT __declspec(dllexport)
#else
#define EXPORT
#endif

EXPORT void do_nothing()
{
    printf("I did nothing\n");
}

EXPORT int return25()
{
    return 25;
}

#define ADD2(TYPE, NAME) EXPORT TYPE add_ ## NAME(TYPE A, TYPE B) { return A + B; }
#define ADD1(TYPE) ADD2(TYPE, TYPE)

ADD2(sint8, int8)
ADD1(uint8)
ADD2(sint16, int16)
ADD1(uint16)
ADD2(sint32, int32)
ADD1(uint32)
ADD2(sint64, int64)
ADD1(uint64)
ADD1(int)
ADD1(uint)
ADD2(sbyte, byte)
ADD1(ubyte)
ADD1(short)
ADD1(ushort)
ADD1(long)
ADD1(ulong)
ADD1(longlong)
ADD1(ulonglong)
ADD1(double)
ADD1(float)
ADD1(longdouble)
